package com.da.lon.wang.xlg.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.RadioGroup;

public class FlowRadioGroup extends RadioGroup {

    public FlowRadioGroup(Context context) {
        super(context);
    }

    public FlowRadioGroup(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        try {
            int maxWidth = MeasureSpec.getSize(widthMeasureSpec);
            int childCount = getChildCount();
            int x = 0;
            int y = 0;
            int row = 0;
            int height = 0;

            for (int index = 0; index < childCount; index++) {
                final View child = getChildAt(index);
                if (child.getVisibility() != View.GONE) {
                    child.measure(MeasureSpec.UNSPECIFIED,
                            MeasureSpec.UNSPECIFIED);
                    int width = child.getMeasuredWidth();
                    int end_height = child.getMeasuredHeight();
                    if (height == 0) {
                        height = end_height;
                    }
//					x += width;
                    if (index != 0) {
                        x += width + 20;
                    } else {
                        x += width;
                    }
                    y = row * height + height;
                    if (x > maxWidth) {
                        x = width;
                        row++;
                        y = row * height + height + row * 20;
                    }
                    if (row > 0) {
                        y = row * height + height + row * 20;
                    }

                }
            }
            setMeasuredDimension(maxWidth, y);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        try {
            final int childCount = getChildCount();
            int maxWidth = r - l;
            int x = 0;
            int y = 0;
            int row = 0;
            int height = 0;
            for (int i = 0; i < childCount; i++) {
                final View child = this.getChildAt(i);
                if (child.getVisibility() != View.GONE) {
                    int width = child.getMeasuredWidth();
                    int end_height = child.getMeasuredHeight();
                    if (height == 0) {
                        height = end_height;
                    }
                    if (i != 0) {
                        x += width + 20;
                    } else {
                        x += width;
                    }
                    y = row * height + height;

                    if (x > maxWidth) {
                        x = width;
                        row++;
                        y = row * height + height + 20;
                    }
                    if (row > 0) {
                        y = row * height + height + row * 20;
                    }
                    child.layout(x - width, y - height, x, y);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}